Make pbump (internally) handle sizes bigger than MAX_INT. Fixes PR#33725 - thanks to Jonathan Wakely for the report git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@313031 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/sstream b/include/sstream index fe65fd7..31cb37a 100644 --- a/include/sstream +++ b/include/sstream 
@@ -289,7 +289,7 @@  if (__bout != -1)  {  this->setp(__p + __bout, __p + __eout); - this->pbump(__nout); + this->__pbump(__nout);  }  __hm_ = __hm == -1 ? nullptr : __p + __hm;  __p = const_cast<char_type*>(__rhs.__str_.data()); @@ -332,7 +332,7 @@  if (__bout != -1)  {  this->setp(__p + __bout, __p + __eout); - this->pbump(__nout); + this->__pbump(__nout);  }  else  this->setp(nullptr, nullptr); @@ -403,7 +403,7 @@  if (__rbout != -1)  {  this->setp(__p + __rbout, __p + __reout); - this->pbump(__rnout); + this->__pbump(__rnout);  }  else  this->setp(nullptr, nullptr); @@ -416,7 +416,7 @@  if (__lbout != -1)  {  __rhs.setp(__p + __lbout, __p + __leout); - __rhs.pbump(__lnout); + __rhs.__pbump(__lnout);  }  else  __rhs.setp(nullptr, nullptr); @@ -471,7 +471,15 @@  this->setp(const_cast<char_type*>(__str_.data()),  const_cast<char_type*>(__str_.data()) + __str_.size());  if (__mode_ & (ios_base::app | ios_base::ate)) - this->pbump(__sz); + { + while (__sz > INT_MAX) + { +	this->pbump(INT_MAX); +	__sz -= INT_MAX; + } + if (__sz > 0) +	this->pbump(__sz); +	}  }  }   @@ -536,7 +544,7 @@  __str_.resize(__str_.capacity());  char_type* __p = const_cast<char_type*>(__str_.data());  this->setp(__p, __p + __str_.size()); - this->pbump(__nout); + this->__pbump(__nout);  __hm_ = this->pbase() + __hm;  #ifndef _LIBCPP_NO_EXCEPTIONS  }